﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;


namespace Projeto_Alice___Forca
{
    class Dicas
    {
        Texture2D t2dDica;
        Texture2D t2dDicas123;
        Rectangle recPosicaoTamanho;
        Rectangle recLocalLeituraFrame;
        Rectangle recDicas123PosicaoTamanho;
        Rectangle recDicas123LocalLeituraFrame;
        bool blnDicaSolicitada = false;
        int intPadraoLocalLeitura_X;
        int intPadraoDicas123LocalLeitura_X;
        float opacidade;
        bool blnMostrarDica = true;

        MouseState MouseAtual = Mouse.GetState();
        MouseState MouseAnterior = Mouse.GetState();

        public Dicas(Texture2D t2dDica, Texture2D t2dDicas123, Rectangle recPosicaoTamanho, Rectangle recLocalLeituraFrame, Rectangle recDicas123PosicaoTamanho, Rectangle recDicas123LocalLeituraFrame)
        {
            this.t2dDica = t2dDica;
            this.t2dDicas123 = t2dDicas123;
            this.recPosicaoTamanho = recPosicaoTamanho;
            this.recLocalLeituraFrame = recLocalLeituraFrame;
            this.recDicas123PosicaoTamanho = recDicas123PosicaoTamanho;
            this.recDicas123LocalLeituraFrame = recDicas123LocalLeituraFrame;
        }

        public void definirPropriedade()
        {
            intPadraoLocalLeitura_X = t2dDica.Width;
            intPadraoDicas123LocalLeitura_X = t2dDicas123.Width / 3;
            blnDicaSolicitada = false;
            blnMostrarDica = true;
        }

        public bool blndicaSolicitada
        { get { return blnDicaSolicitada; } }

        public void desenharDica(SpriteBatch sprite)
        {
            if (blnDicaSolicitada)
            {
                recLocalLeituraFrame.X = 160;
            }
            else
            {
                if (Mouse.GetState().X > recPosicaoTamanho.X &&
                   Mouse.GetState().X < recPosicaoTamanho.X + recLocalLeituraFrame.Width &&
                   Mouse.GetState().Y > recPosicaoTamanho.Y &&
                   Mouse.GetState().Y < recPosicaoTamanho.Y + recLocalLeituraFrame.Height)
                    recLocalLeituraFrame.X = recLocalLeituraFrame.Width;
                else
                    recLocalLeituraFrame.X = 0;
            }

            sprite.Draw(t2dDica, recPosicaoTamanho, recLocalLeituraFrame, Color.White);
        }

        public bool ChecarClique()
        {
            bool blnChecarClique = false;

            MouseAtual = Mouse.GetState();

            if (MouseAtual.X > recPosicaoTamanho.X && MouseAtual.X < recPosicaoTamanho.X + t2dDica.Width &&
               MouseAtual.Y > recPosicaoTamanho.Y && MouseAtual.Y < recPosicaoTamanho.Y + t2dDica.Height &&
               MouseAtual.LeftButton == ButtonState.Pressed && MouseAnterior.LeftButton == ButtonState.Released)
            {
                if (!blnDicaSolicitada)
                {
                    blnChecarClique = true;
                    blnDicaSolicitada = true;
                    opacidade = 4f;
                }
            }

            MouseAnterior = MouseAtual;

            return blnChecarClique;
        }

        public void mostrarDica(SpriteBatch sprite, int intPalavra)
        {
            if (blnMostrarDica)
            {
                recDicas123LocalLeituraFrame.X = intPadraoDicas123LocalLeitura_X;

                if (intPalavra == 1)
                {
                    recDicas123LocalLeituraFrame.X = recDicas123LocalLeituraFrame.X * 2;
                }
                else if (intPalavra == 2)
                {
                    recDicas123LocalLeituraFrame.X = recDicas123LocalLeituraFrame.X * 1;
                }
                else if (intPalavra == 3)
                {
                    recDicas123LocalLeituraFrame.X = recDicas123LocalLeituraFrame.X * 0;
                }

                if (opacidade > 0)
                {
                    sprite.Draw(t2dDicas123, recDicas123PosicaoTamanho, recDicas123LocalLeituraFrame, new Color(255f, 255f, 255f, opacidade));
                }
                else
                    blnMostrarDica = false;

                opacidade -= 0.01f;
            }
        }
    }
}
